package com.dimples.dd.system.api.logger.dto;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;

/**
 * 登录日志创建 Request DTO
 *
 * @author zhongyj <1126834403@qq.com><br/>
 * @date 2024/9/3
 */
@Data
public class LoginLogCreateReqDTO {

    /**
     * 日志类型，参见 LoginLogTypeEnum 枚举类
     */
    @NotNull(message = "日志类型不能为空")
    private Integer logType;

    /**
     * 链路追踪编号
     */
    private String traceId;

    /**
     * 用户编号
     */
    private Long userId;

    /**
     * 用户类型，参见 UserTypeEnum 枚举
     */
    @NotNull(message = "用户类型不能为空")
    private Byte userType;

    /**
     * 用户账号
     */
    @NotBlank(message = "用户账号不能为空")
    @Size(max = 30, message = "用户账号长度不能超过30个字符")
    private String username;

    /**
     * 登录结果，参见 LoginResultEnum 枚举类
     */
    @NotNull(message = "登录结果不能为空")
    private Byte result;

    /**
     * 用户 IP
     */
    @NotEmpty(message = "用户 IP 不能为空")
    private String userIp;

    /** 登录地点 */
    private String loginLocation;

    /**
     * 浏览器
     */
    private String browser;

    /**
     * 操作系统
     */
    private String os;

}
